ARTICLES > Javascript

การเรียก ready function ให้ทำงานอีกครั้ง Turn Back

2013-02-28 12:11:46

ปัญหานี้เกิดขึ้นจากการวางคำสั่งไว้ใน $().ready(function() { ... }

ซึ่งจะสามารถทำงานได้ครั้งเดียวที่โหลดเพจขึ้นมา แต่ถ้ามีการเขียน เปลี่ยนแก้ไข html แบบ dynamic

โดยใช้ innerText innerHtml , ajax หรือพวก open popup แล้วจะกลับมาทำงานในหน้า window.opener

ซึ่งบางงาน อาจมีการเรียกใช้งาน script ใน ready function อีกครั้ง แต่กลับไม่สามารถทำงานได้

ดังนั้นเราจำเป็นต้องกำหนด function คำสั่งใน ready เป็นแบบ global แล้วทำการเรียกใช้งานอีกครั้ง

ตัวอย่าง.

index.html

<script>

$().ready(function() {
    
    window.foo = function foo() { 
        $(".calendar").datepicker();
    }
    
    foo();
    
});

</script>

 

หลังจากทำงานที่ window popup เสร็จ ก็เรียกใช้ foo() อีกครั้งเพื่อให้ datepicker ทำงาน

popup.html

$(opener.document).find('div').append('<input class="calendar" />');

window.opener.foo();
window.close();

Turn Back